#ifndef __HECHANG_PULICSENDLUADATA_H__
#define __HECHANG_PULICSENDLUADATA_H__

#include "cocos2d.h"
using namespace cocos2d;

/*
 1，C++如何获取Lua里面的一个变量值？
 
 2，C++如何获取Lua里面一个Table（Lua利用Table实现面向对象，那就能调用Lua里面的比较高级的引用方法）
 
 3，C++如何访问Lua里面的一个方法？
 
 4，C++如何访问Lua里面的一个带参数的方法？
 
 5，C++如何访问Lua里面的一个带参数的方法并且带返回值？
 */

class PublicSendLuaData : public cocos2d::Layer
{
public:
    static PublicSendLuaData* getInstance();
    
    /*
     直接获取Lua中得变量名值
     文件名 luaFileName
     变量名 varName
     */
    const char* getLuaVarString(const char* luaFileName,const char* varName);
    
    /*
     获取Lua中一个表中得节点名，甚至方法
     文件名luaFileName
     方法名varName
     节点名
     */
    const char* getLuaVarOneOfTable(const char* luaFileName,const char* varName,const char* keyName);
    
    /*
     调用Lua全局Table
     lua文件名luaFileName
     table变量名varName
     */
    const char* getLuaVarTable(const char* luaFileName,const char* varName);
    
    /*
     带参数有返回
     文件名luaFileName
     方法名functionName
     参数序列arraypar
     参数类型arraypartype
     */
    const char* callLuaFuncParReturn(const char* luaFileName,const char* functionName,__Array* arraypar,__Array* arraypartype);
    
    /*
     带参数无返回
     文件名luaFileName
     方法名functionName
     参数序列arraypar
     参数类型arraypartype
     */
    const void callLuaFuncPar(const char* luaFileName,const char* functionName,__Array* arraypar,__Array* arraypartype);
    
    
private:
    
    static bool _isFirst;
    static PublicSendLuaData* m_instance;
    const char* getFileFullPath(const char* fileName);
    ~PublicSendLuaData();
    
};

#endif //__HECHANG_PULICSENDLUADATA_H__
